/**
 * 请求结果错误处理
 */
const handelError = (response) => {
  const custom = response.config?.custom;
  const data = response.data;
  // 如果没有显式定义custom的toast参数为false的话，默认对报错进行toast弹出提示
  if (custom?.toast !== false) {
    uni.$u.toast(data.message);
  }
  // 如果需要catch返回，则进行reject
  if (custom?.catch) {
    return Promise.reject(data);
  } else {
    // 否则返回一个pending中的promise
    return { error: data.message || "服务器错误,请联系管理员" };
  }
};

/**
 * 请求拦截
 * @param {Object} http
 */

export const responseInterceptors = () => {
  uni.$u.http.interceptors.response.use(
    (response) => {
      // 可使用async await 做异步操作
      const data = response.data;
      // 自定义参数
      if (data?.code !== 0) {
        //返回状态码不为 0 则处理错误
        return handelError(response);
      }
      return data;
    },
    (
      response, // 可使用async await 做异步操作
    ) => {
      return handelError(response);
    },
  );
};
